#pragma once
#ifndef _KlAS_PRIMITIVE_TYPES_HPP_
#define _KLAS_PRIMITIVE_TYPES_HPP_

namespace klas
{
  namespace graphics
  {
    namespace primitiveTypes
    {
      //! Primitive types that are suppored.
      enum ePrimitiveType { CIRCLE, RECTANGLE, TRIANGLE, LINE };

      //! Rendering style of primitive types that is supported
      enum ePolygonMode { FILLED,       //!< Renders the entire primitive.  This is default behavior.
                          WIREFRAME,   //!< Renders the outline of the primitive.
                          VERTICIES }; //!< Renders only the points, or verticies, of the primitive.

      struct sPrimitiveType
      { 

        sPrimitiveType()
          : primitiveType(RECTANGLE), angle(0.0), polygonMode(FILLED)
        {}

        sPrimitiveType(ePrimitiveType primType, double angle_ = 90)
          : primitiveType(primType), angle(angle_), polygonMode(FILLED)
        {
          while(angle >= 180)
            angle -= 180;
          while(angle < 0)
            angle += 180;
        }

        ePrimitiveType primitiveType;
        double angle;
        ePolygonMode polygonMode;
      };
    }
  }
}

#endif